import Vue from 'vue'

import Vuex from 'vuex'

Vue.use(Vuex)

const store =new Vuex.Store({
  state:{
    count:101
    // 1.组件的访问方式：
    //直接访问 this.$store.state.count
    //辅助函数：
    // 1.1.按需导入辅助函数 
    // 1.2.使用辅助函数在computed处展开
    
  },
  // 2.mutations 
    // 作用:修改state的数据
    // 是一个函数
  mutations:{
    // 参数1：永远是state
    increm(state){
      state.count ++
    },
    // 需要接受外部的参数
    // 传什么改什么
    changeCount(state,num){
      state.count = num
    }
  },
  // mapMutations 的用法：
  // 1.1按需导入辅助函数
  // 1.2使用辅助函数，在methods出展开

  // 3.actions 
  //不能直接操作state，需要交给mutations 操作
  actions:{
    asyncIncre(context){
      setTimeout(() => {
       context.commit('increm')
      },1000)
    },
    asyncChangeCount(context,num){
      setTimeout(() => {
       context.commit('changeCount',num)
      },1000)
    }
  }
})

export default store